package com.leo.db;

import java.lang.reflect.Proxy;

/**
 * @BelongsProject: leo-emailfx
 * @BelongsPackage: com.leo.db
 * @Author: wangss
 * @CreateTime: 2023-02-13  22:20
 * @Description: TODO
 * @Version: 1.0
 */
public class DaoMapperProxy {

    public static <T> T getProxyInstance(Class<T> clazz) {
        // 使用静态方法 newProxyInstance() ，创建代理对象
        // ClassLoader loader：类加载器，负责向内存中加载对象（需要使用目标对象的类加载器）
        // Class<?>[] interfaces：目标对象实现的接口
        // InvocationHandler h：我们自己写的代理类需要实现的功能 返回值就是代理对象
        return (T) Proxy.newProxyInstance(clazz.getClassLoader(), new Class<?>[]{clazz}, new MapperInterceptor<T>());
    }
}
